昨天给大家介绍了怎么进行同一个类里面的方法调用,今天将会给大家说一下modifier以及不同类之间怎么进行方法调用。
首先来说一下modifier。它有四个值:public,private,default,protected.其中,当你不声明modifier的时候默认就为default。所以default不需要写出来。而且关键字default实际上也不是modifier,而是用于指示Annotation的默认值(感觉怪怪的。。)。
这个modifier其实是用于指示
一个类的成员的访问策略。就是指示一个类的某个方法,或者字段,更或者是成员类是否可以被外部哪些成员类访问。来看下表:
名称 | 策略 |
public | 可以供所有其它类访问 |
private | 只能供同一类内部访问 |
default | 可以被同一个package下面的其它类访问 |
protected | 只可以被自己及子类成员访问 |
为了弄明白怎么回事,我们需要做个稍微复杂一点的实验,首先大家创建以下的类:
然后,Modifier.java里面的代码如下:
Java代码

- package modifier;
-
- public class Modifier {
- /**
- * 公共方法可以供所有其它类访问
- */
- public void publicMethod(){
- System.out.println("Everybody can visit me.");
- }
-
- /**
- * 默认访问类型方法,可供同一个package的类访问
- */
- void defaultMethod(){
- System.out.println("Default method");
- }
-
- /**
- * 受限类型方法,可以供自己或子类访问
- */
- protected void protectedMethod(){
- System.out.println("Hello my child!");
- }
-
- /*
- * 私有类型方法,只能被内部调用
- */
- private void privateMethod()
- {
- System.out.println("I'm a selfish guy:p");
- }
- }
Neighbour代码:
Java代码

- package modifier;
-
- public class Neighbour {
- public void visitDefault(){
- new Modifier().defaultMethod();
- }
- }
ChildClass代码:
Java代码

- package modifier.child;
-
- import modifier.Modifier;
-
- public class ChildClass extends Modifier {
- public void visitProtected(){
- protectedMethod();
- }
- }
Foreigner代码:
Java代码

- package modifier.child;
-
- import modifier.Modifier;
-
- public class Foreigner {
- public void visitPublic()
- {
- new Modifier().publicMethod();
- }
- }
除了以上的代码外,大家还可以自己做以下实验:
[list=1]
在任何类里面通过new Modifier().publicMethod()来访问公共方法
在任何类里面通过new Modifier().protectedMethod()来访问受限方法
在任何类里面通过new Modifier().defaultMethod()来访问默认方法
在任何类里面通过new Modifier().privateMethod()来访问私有方法
[/list]
除了第一点会在所有类中都成功之外,其它的几条在上面几个类的实验中应该都只会在某个类中会成功。
几个类的意义:
类名 | 代表意义 |
Modifier | Modifier测试类 |
Neighbour | Modifier的邻居类,和Modifier同处于一个package层级下。 |
ChildClass | Modifier的继承类,继承了Modifier除了标有private和default以外的所有成员 |
Foreigner | 跟Modifier没有任何关系的外类 |
好了,在我们结束今天的内容之前,大约预习以下后面的内容:
在例子里面,我们需要通过new Modifier()来访问Modifier类里面的东西,为什么呢?因为要访问一个类里面非静态(static)的成员,只有在把这个类的实例(instance)创建出来,分配了实际的地址段给它之后,它的成员才有对应的地址段可供访问。这就好比类是一个房子的设计蓝图,上面描述了房子的方方面面,面积啦,房间布局啦等等。但是如果房子一天没起,这些东西都不会具体话,也没办法住人。
而new Modifier()就好像起房子一样。当然,明天我们说静态方法和恒定方法的时候,会再介绍另一种方法调用的方式。
另外,关于继承。如果我们的一个类需要有某个类的大部分特点的时候,比如要写一个Apple类,而在此之前已经有一个叫Fruit的类了,而且Apple类含有Fruit的所有特征及一些自己特有的特征。那么在解决这类问题的时候就会用到继承的概念。方法很简单,就是在你的类名后面,使用extends关键字把父类和子类联系起来:
Java代码

- public class Child extends Parent
好了,今天就到此为止,谢谢大家观看。